package com.sunday.common.core.enums;

import lombok.AllArgsConstructor;

/**
 * 平台统一错误码
 * <p>
 * PS：不允许私自添加枚举类别，新增后需要同步更新文档
 * <p>
 * 【强制】错误产生来源分为 A/B/C，
 * <p>
 * A 表示错误来源于用户，比如参数错误，用户安装版本过低，用户支付超时等问题；
 * B 表示错误来源于当前系统，往往是业务逻辑出错，或程序健壮性差等问题；
 * C 表示错误来源于第三方服务，比如 CDN 服务出错，消息投递超时等问题；
 * <p>
 * 四位数字编号从 0001 到 9999，大类之间的步长间距预留 100
 * <p>
 * 【推荐】错误码分为一级宏观错误码、二级宏观错误码、三级宏观错误码。
 * 说明：在无法更加具体确定的错误场景中，可以直接使用一级宏观错误码，分别是：A0001（用户端错误）、 B0001（系统执行出错）、C0001（调用第三方服务出错）。
 * 正例：调用第三方服务出错是一级，中间件错误是二级，消息服务出错是三级。
 * <p>
 * 【推荐】错误码之外的业务独特信息由 error_message 来承载，而不是让错误码本身涵盖过多具体业务属性。
 * 【推荐】在获取第三方服务错误码时，向上抛出允许本系统转义，由 C 转为 B，并且在错误信息上带上原有的第三方错误码。
 *
 * @author zsy
 * @since 2022/10/13
 */
@AllArgsConstructor
public enum SuccessCodeEnum {

    /**
     * 00000	  正确执行后的返回  一切 ok 正确执行后的返回
     */
    SUCCESS("00000", "成功");               // 正确执行后的返回

    public String errorCode;

    public String errorMessage;

}
